﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace Pahan.McuFusion.UI.Interfaces
{
    public interface IWizardView : IDisposable
    {
        /// <summary>
        /// Gets or sets the title of the wizard.
        /// </summary>
        String Title
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets whether the user can navigate to the next page.
        /// </summary>
        bool CanGoNext
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets whether the user can navigate to the previous page.
        /// </summary>
        bool CanGoBack
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets whether the user can finish the dialog.
        /// </summary>
        bool CanFinish
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets whether the user can cancel the dialog.
        /// </summary>
        bool CanCancel
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the current page.
        /// </summary>
        IWizardPage CurrentPage
        {
            get;
            set;
        }

        /// <summary>
        /// Show the wizard.
        /// </summary>
        /// <returns>
        /// True if the user has finished the wizard; 
        /// false if the user has cancelled the wizard.
        /// </returns>
        bool Show();

        /// <summary>
        /// Closes the wizard.
        /// </summary>
        void Close(bool result);

        /// <summary>
        /// Raised when the Next button is clicked.
        /// </summary>
        event EventHandler NextClicked;

        /// <summary>
        /// Raised when the Back button is clicked.
        /// </summary>
        event EventHandler BackClicked;

        /// <summary>
        /// Raised when the Finish button is clicked.
        /// </summary>
        event EventHandler FinishClicked;
    }
}
